package com.denlaku.longan.controller;

import com.denlaku.longan.http.Return;
import com.denlaku.longan.qo.UserQuery;
import com.denlaku.longan.vo.PageBy;
import com.denlaku.longan.vo.User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

/**
 * 用户Controller
 *
 * @author tianx
 */
@RequestMapping("/common/user")
public interface UserController {
    /**
     * 分页查询用户信息
     *
     * @param userQuery 用户查询参数
     * @param pageBy 分页信息
     * @return 用户信息分页列表
     */
    @PostMapping("/page-list")
    Return<List<User>> pageList(@RequestBody UserQuery userQuery, PageBy pageBy);
    /**
     * 分页查询用户信息
     *
     * @param userQuery 用户查询参数
     * @return 用户信息分页列表
     */
    @PostMapping("/search")
    Return<List<User>> search(@RequestBody UserQuery userQuery);

    /**
     * 获取用户信息
     *
     * @param id 用户ID
     * @return 用户信息
     */
    @GetMapping("/get")
    Return<User> get(Long id);

    /**
     * 新增用户
     *
     * @param user 用户信息
     * @return 响应对象
     */
    @PostMapping("/add")
    Return<Long> add(@RequestBody User user);

    /**
     * 更新用户
     *
     * @param user 用户信息
     * @return 响应对象
     */
    @PostMapping("/update")
    Return<Void> update(@RequestBody User user);

    /**
     * 响应对象
     *
     * @param id 用户ID
     * @return 响应对象
     */
    @PostMapping("/delete")
    Return<Void> delete(Long id);

    /**
     * 启用用户
     *
     * @param id 用户ID
     * @return 响应对象
     */
    @PostMapping("/enabled")
    Return<Void> enabled(Long id);

    /**
     * 禁用用户
     *
     * @param id 用户ID
     * @return 响应对象
     */
    @PostMapping("/disabled")
    Return<Void> disabled(Long id);

}
